
#include "common.h"

#define MO_GRP GPIOC
#define MO_PIN GPIO_Pin_4

void motor_init()
{
    //printf("motor init\r\n");
    GPIO_Init(MO_GRP, MO_PIN, GPIO_Mode_Out_PP_Low_Fast);
    GPIO_ResetBits(MO_GRP, MO_PIN);
}

void motor_open()
{
    GPIO_SetBits(MO_GRP, MO_PIN);
    printf("motor open\r\n");
}

void motor_close()
{
    GPIO_ResetBits(MO_GRP, MO_PIN);
    printf("motor close\r\n");
}

void motor_selftest()
{
    GPIO_ToggleBits(MO_GRP, MO_PIN);
}

static uint32_t shake_times = 0;
void motor_shake(uint32_t times)
{
    shake_times = times;
    set_timer_event(MOTOR_TASK, EVENT_MOTOR_TIMER, 20); 
}

int motor_callback(int value)
{      
   if (value & EVENT_MOTOR_START)
   {
      //set_timer_event(MOTOR_TASK, EVENT_MOTOR_TIMER, 1000);
      value &= ~(EVENT_MOTOR_START);
   }

   if (value & EVENT_MOTOR_TIMER)
   {
      if (shake_times-- > 0)
      {
          motor_open();
          set_timer_event(MOTOR_TASK, EVENT_MOTOR_TIMER, 1000); 
      }
      else
      {
          motor_close();
      }
   }
   return value;
}
